package org.yefei.homeworkday27;

import java.io.*;
import java.util.Scanner;

public class Three {
	// 3:输入一个文件名，计算他的大小（字节作为单位）。注意，一个文件夹的大小是其所有文件的大小和。
	// 获得一个文件夹路径
	public File getDirection() {
		// 创建键盘录入对象
		Scanner in = new Scanner(System.in);
		System.out.println("请输入一个文件名：");
		while (true) {
			String path = in.nextLine(); // 键盘录入文件夹路径存储
			File direction = new File(path); // 封装file对象
			// 判断
			if (!direction.exists())
				System.out.println("你输入的文件夹路径不存在，请重新输入：");
			else
				return direction;
		}
	}

	// 获得文件夹大小
	public long getFileLength(File direction) {
		// 如果只是单个文件
		if (direction.isFile())
			return direction.length();
		// 如果文件有读取权限
		if (direction.canRead() == false)
			return 0;

		// 1定义一个求和变量
		long sum = 0;
		// 2.获取文件夹下所有文件夹和文件
		File[] files = direction.listFiles();

		// 如果文件夹是空的
		if (files == null) {
			return direction.length();
		}

		// 3.遍历数组
		for (File file : files) {
			// 4.判断是文件就计算大小
			if (file.isFile())
				sum += file.length();
			else
				// 5.如果是文件夹，就递归调用
				sum += getFileLength(file);
		}
		return sum;
	}

	public static void main(String[] args) {
		Three t = new Three();
		File direction = t.getDirection();
		System.out.println("文件占了" + t.getFileLength(direction) + "字节");
	}

}
